/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.ipti.br.tag.bean.validator;

import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
import javax.inject.Inject;
import org.ipti.br.tag.bo.HumanBO;
import org.ipti.br.tag.bo.UnityBO;
import org.ipti.br.tag.entity.Human;
import org.ipti.br.tag.entity.Unity;

/**
 *
 * @author ipti008
 */
@FacesValidator(value = "unityV")
public class UnityValidator implements Validator {

    @Inject
    private UnityBO unityBO;
    @Inject
    private HumanBO humanBO;

    @Override
    public void validate(FacesContext fc, UIComponent uic, Object o) throws ValidatorException {

        Unity unity = (Unity) o;

        List<Unity> unities = unityBO.getUnityDAO().getUnityChildren(unity.getId());
        if(unities.isEmpty()){
            Long count = humanBO.getHumanDAO().countHumans(unity);
            
            if (count == 0){
                FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Erro de validação", "a unidade " + unity.getName() + " não possui alunos matriculados.");
                throw new ValidatorException(msg);
            }
        }
        
        
        //FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO,
        //        "Informação", "a unidade foi validada com sucesso.");
        //throw new ValidatorException(msg);

    }

}
